'use strict';

module.exports = {
  md5(str) {
    const utility = require('utility');// 密码加密
    const secretStr = this.app.config.account.secretStr;// 引入config.default.js中配置的加密字串
    if (!str) return '';
    return utility.md5(str + secretStr);
  },
  removeArryEnd(str, char) {
    const t_arry = str.split(char);
    t_arry.pop();
    return t_arry.join(char);
  },
  getUserId() {
    const { app, ctx } = this;
    const secret = app.config.jwt.secret;
    const passportType = app.config.auth.passport.type;

    if (passportType === 'jwt') {
      const token = ctx.request.header.authorization || ctx.cookies.get('authorization');
      const decode = app.jwt.verify(token, secret);
      if (decode && decode.userId) return decode.userId;
    } else if (passportType === 'session') {
      return this.ctx.session.userId;
    }
  },
  getUserName() {
    const { app, ctx } = this;
    const secret = app.config.jwt.secret;
    const passportType = app.config.auth.passport.type;

    if (passportType === 'jwt') {
      const token = ctx.request.header.authorization || ctx.cookies.get('authorization');
      const decode = app.jwt.verify(token, secret);
      if (decode && decode.userName) return decode.userName;
    } else if (passportType === 'session') {
      return this.ctx.session.userName;
    }
  },

  // 判断是否合法车牌号
  isCarLicense(carno) {
    // 参数判断
    if (!carno) {
      return false;
    }
    // 匹配民用车牌和使馆车牌
    // 判断标准
    // 1.第一位为汉子省份缩写
    // 2.第二位为大写字母城市编码
    // 3.后面是5位仅含字母和数字的组合
    let regular = /[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Z]{1}[0-9a-zA-Z]{5}$/;
    let match = regular.test(carno);
    if (match) {
      return true;
    }
    // 匹配特种车牌(挂,警,学,领,港,澳)
    regular = /[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$/;
    match = regular.test(carno);
    if (match) {
      return true;
    }
    // 匹配武警车牌
    regular = /^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$/;
    match = regular.test(carno);
    if (match) {
      return true;
    }
    // 匹配军牌
    regular = /[A-Z]{2}[0-9]{5}$/;
    match = regular.test(carno);
    if (match) {
      return true;
    }
    // 匹配新能源车辆6位车牌
    // 小型新能源车
    regular = /[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[DF]{1}[0-9a-zA-Z]{5}$/;
    match = regular.test(carno);
    if (match) {
      return true;
    }
    // 大型新能源车
    regular = /[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$/;
    match = regular.test(carno);
    if (match) {
      return true;
    }
    return false;
  },

  randomNo(j) {
    // j位随机数，用以加在时间戳后面。
    let random_no = '';
    for (let i = 0; i < j; i++) {
      random_no += Math.floor(Math.random() * 10);
    }
    random_no = new Date().getTime() + random_no;
    return random_no;
  },
};
